《Stochastic Training of Graph Convolutional Networks with Variance Reduction》
图卷积网络(graph convolution network: GCN
)将卷积神经网络CNN
推广到图结构化数据。图卷积(graph convolution
)操作对节点的所有邻居应用相同的线性变换,然后是均值池化和非线性激活函数。通过堆叠多个图卷积层,GCN
可以利用来自遥远邻居的信息来学习 node representation
。GCN
及其变体已被应用于半监督节点分类、inductive node embedding
、链接预测、 以及知识图谱,超越了不使用图结构的多层感知机 MLP
以及不使用节点特征的 graph embedding
方法。
然而,图卷积操作使得 GCN
难以高效地训练。考虑一个 GCN
,节点的第 hidden feature
需要递归地通过其邻域内所有节点的第 hidden feature
来计算。因此,如下图 (a)
所示,单个节点的感受野(receptive field
) 的大小随网络层数呈指数型增长。
为解决感受野太大的问题,《Semi-supervised classification with graph convolutional networks》
提出通过 batch
算法来训练 GCN
,该方法同时计算 batch
内所有节点的 representation
。但是,由于 batch
算法收敛速度慢,以及需要将整个数据集放入到 GPU
中,因此无法处理大规模数据集。
《Inductive representation learning on large graphs》
尝试邻域采样( neighbor sampling: NS
) 的方法为GCN
提出随机训练算法。在 NS
算法中,他们并未考虑节点的所有邻居,而是为每个节点在第 (b)
所示。这可以将感受野的大小减小到 GCN
网络,选择 GCN
相当的性能。
理论上当 MLP
。虽然 Hamilton
的方法复杂度降低,但是仍然比 MLP
要大
另外,使用基于邻域采样的随机训练算法能否确保模型收敛,尚无理论上的保证。
在论文 《Stochastic Training of Graph Convolutional Networks with Variance Reduction》
中,作者为 GCN
设计了新颖的基于控制变量的( control variate-based
)随机逼近算法,即 GCN with Variance Reduction: VRGCN
。
VRGCN
利用节点的历史激活值(即历史hidden feature
)作为控制变量(control variate
)。作者表明:通过邻域采样NS
策略得到的 hidden feature
的方差取决于 hidden feature
的幅度(magnitude
)(因为 hidden feature
是一个向量),而VRGCN
得到的 hidden feature
的方差取决于 hidden feature
和它历史均值之间的差异( difference
)。
另外,VRGCN
还带来了理论上的收敛性保证。VRGCN
可以给出无偏的(相比较于原始的 GCN
)、零方差的预测。并且训练算法可以收敛到GCN
损失函数的局部最优值,而与采样大小 VRGCN
可以通过仅对节点采样两个邻居节点来显著降低模型的时间复杂度,同时保持模型的质量。
作者在六个 graph
数据集上对 VRGCN
进行了实验测试,并表明 VRGCN
显著降低了具有相同感受野大小的 NS
的梯度的偏差(bias
)和方差(variance
)。尽管仅采样 VRGCN
在所有数据集上的可比数量的 epoch
中实现了与精确算法相同的预测性能,即,VRGCN
降低了时间复杂度同时几乎没有损失收敛速度,这是我们可以预期的最好结果。在最大的 Reddit
数据集上,VRGCN
算法的训练时间相比精确算法(《Semi-supervised classification with graph convolutional networks》
)、邻域采样算法(《Inductive representation learning on large graphs》
)、重要性采样算法(《Fastgcn: Fast learning with graph convolutional networks via importance sampling》
)要少 7
倍。
我们以半监督节点分类任务的 GCN
作为说明,当然我们的算法不局限于任务类型,也不局限于模型类型。我们的算法适用于任何涉及到计算邻居平均激活值的其它模型,以及其它任务。
给定图
每个节点 label
label
,这部分节点的集合记作 label
。
定义邻接矩阵
定义传播矩阵 propagation matrix
其中 self-loop
的邻接矩阵。
因此一个图卷积层可以定义为(假设当前为第
其中:
hidden feature
矩阵,也称作激活矩阵( activataion matrix
)。
第 hidden feature
向量,也称作激活值( activation
)。
假设 GCN
模型有 GCN
模型的训练损失函数为:
其中:
final representation
。
卷积层通过 hidden feature
向量为:
它就是 hidden feature
的加权和。
定义节点 receptive field
)为:为计算
对于一个 GCN
,节点 L-hop
邻域集合。
当 GCN
退化为一个多层感知机 MLP
,其中不涉及任何图结构信息。对于多层感知机,节点
GCN
训练损失函数的 batch
梯度为:
由于每次迭代都涉及整个标记节点集合 batch
梯度代价太大。
一个可行的方案是采用随机梯度作为 batch
梯度的近似值:
其中 mini-batch
。
但是,由于感受野太大,mini-batch
梯度的计算代价仍然很高。例如,NELL
数据集的 2-hop
邻域平均包含 1597
个节点,这意味着在一个 2
层 GCN
中,为计算单个节点的梯度需要涉及 1597/65755 = 2.4%
的全部节点。
为降低感受野大小,GraphSAGE
提出了邻域采样(neighbor sampling: NS
)策略。 在第 NS
策略随机采样 hidden feature
其中
因此 NS
策略降低了感受野大小,从 L-hop
邻域大小降低到采样后的邻域大小
我们将 NS
估计量,而
上述邻域采样策略以矩阵的形式可以重写为:
其中传播矩阵
在 GraphSAGE
的随机梯度下降过程中,存在两个随机性来源:
选择 mini-batch
选择大小为
尽管 NS
策略中节点的 final representaion
矩阵 NS
策略中随机梯度下降 SGD
的收敛性得不到保障,除非采样大小
在 GraphSAGE
中,由于梯度是有偏的,因此 NS
策略中的采样大小 exact
策略相近的预测性能。
在 GraphSAGE
中Hamilton
选择 MLP
的感受野(大小为 1
),因此训练仍然代价较高。
FastGCN
是另一种类似于NS
的基于采样的算法。FastGCN
并没有为每个节点采样邻域,而是直接采样每一层的、所有节点共享的感受野。
对于第 FastGCN
首先采样 hidden feature
其中重要性分布:
我们将这种邻域均值 hidden feature
的估计称作重要性采样(importance sampling: IS
)。
注意,IS
采样策略和 NS
采样策略的区别在于:前者为第
当 IS
可以视为 NS
,因为每个节点 NS
可以看作是 IS
的一种。
尽管 IS
策略的感受野大小为 NS
策略的感受野大小 IS
仍然仅在采样大小
从实验来看,我们发现 IS
策略的效果要比 NS
更差,这是因为:在 IS
策略中我们为所有节点采样了共同的一组节点集合,对于部分节点我们采样到了它们的很多个邻居,对于另一些节点我们没有采样到任何邻居。对于后者,这些节点的邻域均值 hidden feature
hidden feature
我们提出一种新的基于控制变量(control variate: CV
)的算法,该算法基于历史 hidden feature
来降低估计量的方差。
当计算邻域均值 hidden feature
affordable
)的近似值。每次计算
令
定义:
其中
这里的核心思想是:主要的
不用递归计算,可以直接从内存中获取到;次要的 需要递归计算,但是仅对它采样一小部分的邻域。同时,这进一步促进了模型权重的缓慢变化。 因为主要部分是精确值,次要部分是近似值,因此这会大幅度降低近似计算带来的影响。
则有:hidden feature
CV
估计量。写作矩阵的形式为:
其中
这里我们仅对
由于我们预期
即估计量的偏差和方差都为零。
我们定义控制变量(control variate
)为:
我们将控制变量 NS
的
现在
仅依赖于不需要递归计算的 ,因此 也不需要递归计算。
采用 CV
估计量来训练 GCN
的方法和 NS
估计量都相同。具体而言,在 GCN
的每轮迭代中都执行以下算法。
VRGCN
迭代算法:
随机选择一个 mini-batch
的节点
构建一个计算图,其中包含当前 mini-batch
每个节点的 hidden feature
计算时需要的其它节点的 hidden feature
根据下面的前向传播公式进行传播:
这里控制变量
的矩阵形式为: 。
通过反向传播计算梯度,并更新参数。
更新 hidden feature
历史均值
其中,第二步的计算图是通过每层的感受野 hidden feature
mini-batch
。
我们自顶向下构建
令
对于第
注意:我们假设
VRGCN
的感受野如下图 (c)
所示,其中红色节点为感受野,其 hidden feature
mini-batch
。蓝色节点的历史 hidden feature
均值 mini-batch
。
为便于理论分析估计量的方差,这里我们假设所有的特征都是一维的。通过分别处理每个维度,我们的分析结论可以推广到多维。
假设
其中
根据以上结论,对于 NS
估计量我们有:
即邻域内所有邻居pair
对的加权 hidden feature
之间的距离之和。如果邻域内所有节点的
同样地,对于 CV
估计量我们有:
相比较于 NS
估计量,这里仅需要将 CV
估计量通常都比 NS
估计量的方差更小。
进一步地,正如我们在下文中分析到的,由于训练期间 间
除了较小的方差,CV
估计量比 NS
估计量还具有更强的理论收敛性保证。这里我们提出两个定理:
如果模型参数固定,则在 inference
期间,CV
会在 epoch
之后产生 exact
预测。
无论邻域采样大小如何,模型都会朝着局部最优解收敛。
假设算法执行多个 epoch
,在每个 epoch
中我们将节点集合 mini-batch
:mini-batch
hidden feature
均值。
注意:在每个 epoch
中我们扫描所有节点,而不仅仅是标记的训练节点,从而确保每个 epoch
中对每个节点的历史 hidden feature
均值至少进行了一次更新。
记第 SGD
随时间更新,在测试期间
记第 exact hidden feature
为 CV
估计量的 hidden feature
为
在第 mini-batch
对于 exact
算法,其损失函数和梯度分别为:
对于 exact
算法,如果 constant
序列,则可以忽略下标
对于 CV
算法,其损失函数和梯度分别为:
梯度
选择 mini-batch
选择大小为
因此我们考虑
以下定理解释了 CV
的近似预测和 exact
预测之间的关系:
对于一个 constant sequence
epoch
之后),通过 CV
估计量计算的 hidden feature
和 exact
计算的相等。即:
其证明见原始论文附录。
该定理表明:在 inference
期间,我们可以使用 CV
估计量进行前向传播 epoch
(通常 GCN
网络中 exact
预测。这优于 NS
估计量,因为除非邻域大小无穷大,否则 NS
估计量无法恢复 exact
预测。
和直接进行 exact
预测的 batch
算法相比,CV
估计量可扩展性更强,因为它不需要将整个图加载到内存中。
以下定理表明,无论邻域采样大小 SGD
训练仍然收敛于局部最优。因此我们可以选择任意小的
定理:假设:
激活函数
损失函数的梯度
对于任意的采样
损失函数
其中
则存在 SGD
迭代时,有:
其中:
[1, N]
之间均匀随机分布的变量。
每次迭代都使用 CV
的近似梯度
其中步长
从定理中我们看到:
简而言之,我们证明了近似梯度 SGD
收敛到局部最优解。
这里我们引入第三种随机性来源:对输入特征的随机 dropout
。
令 dropout
算子,其中 iid
)的伯努利随机变量,
记 dropout
的期望。
引入 dropout
之后,即使在 GCN
中采用 exact
算法,hidden feature
dropout
。
此时节点的邻域均值 hidden feature
在 dropout
场景下, dropout
控制变量( control variate for dropout: CVD
)。
我们的方法基于权重缩放( weight scaling
)技术来近似计算均值 dropout
模型中,我们可以运行没有 dropout
的模型的copy
,从而获得均值 (d)
所示。
我们通过 CVD
估计量。
我们将
其中:
CV
估计量中的
dropout
)和 dropout
)之间的差距。
因此定义:
则有:
第一项考虑
dropout current value
和no-dropout current value
之间的gap
,使用是为了计算方差的方便。第二项考虑 no-dropout current value
和no-dropout avg value
之间的gap
。第三项就是no-dropout avg value
本身。
考虑第一项对于 dropout
具有零均值,即
第一个等式成立是因为当移除 dropout
时, CVD
估计量就退化为 CV
估计量。
因此,CVD
估计量是无偏的。下面我们即将看到,如果 CVD
估计量具有良好的方差。
假设节点的hidden feature
之间不相关,即
假设
则有:
令
这些结论的证明参考原始论文的附录。
通过上述结论,我们有:
我们将第一项视为从 dropout
中引入的方差 (variance from dropout: VD
),第二项视为从邻域采样中引入的方差 (variance from neighbor sampling: VNS
)。理想情况下,VD
应该等于 VNS
应该等于零。
和前述相同的分析,我们可以通过将 VNS
。令 :
根据这里的第一个结论,CVD
的 VD
部分为:exact
估计量的 VD
部分。
我们总结出所有这些估计量及其方差,推导过程参考原始论文。
exact
: VNS
部分为零, VD
部分为
NS
估计量:VNS
部分为 VD
部分为
CV
估计量:VNS
部分 VD
部分
CVD
估计量:VNS
部分 VD
部分为
CV/CVD
的 VNS
取决于 NS
的 VNS
取决于非零的
有两种可能的dropout
方式:
区别在于:第一种方式是在邻域聚合之前应用 dropout
、第二种方式在邻域聚合之后应用 dropout
。《Semi-supervised classification with graph convolutional networks》
采用前者,而我们采用后者。
实验效果上,我们发现这两种方式的效果都相差无几,因此不同的方式不影响模型的效果。采用第二种方式的优势是提升训练速度:我们可以对输入进行预处理,并定义
由于大多数GCN
仅有两层卷积层,因此这种方式可以显著减少感受野大小,并加快训练速度。我们称该优化为预处理策略(preprocessing strategy
)。
我们在六个数据集上通过实验验证了 VRGCN
算法的方差和收敛性,其中包括来自GCN
的 Citeseer, Cora, PubMed, NeLL
四个数据集以及来自 GraphSAGE
的 PPI, Reddit
两个数据集。
对于这些数据集的统计见下表所示。最后两列给出了节点的 1-hop
邻域平均大小、2-hop
邻域平均大小。由于是无向图,因此每条边被计算两次,但是 self-loop
仅被计算一次。
对于每个数据集,所有模型在该数据集上采用相同的训练集/验证集/测试集拆分 (而不是每个模型单独的一个拆分)。
对于 PPI
数据集(多标签分类数据集)我们报告测试集的 Micro-F1
指标,对于其它多分类数据集我们报告准确率。
对于Citeseer, Cora, PubMed, NELL
数据集,baseline
模型为 GCN
;对于 PPI, Reddit
数据集,baseline
模型为 GraphSAGE
。
对于收敛性实验,我们在 Citeseer, Cora, PubMed, NELL
数据集上重复执行 10
次,在 Reddit, PPI
数据集上重复执行 5
次。
所有实验都在 Titan X GPU
上完成。
首先我们评估预处理(PreProcessing: PP
)的影响。我们比较了三种配置:
M0
:dropout
在前、计算邻域均值在后,且计算邻域的 exact
均值(未对邻域进行任何采样)
M1
:计算邻域均值在前、dropout
在后,且计算邻域的 exact
均值(未对邻域进行任何采样)
M1 + PP
:计算邻域均值在前、dropout
在后,且使用较大的邻域大小 exact
的。
实验结果如下所示。我们固定了训练的 epoch
,然后给出不同配置的 GCN
在不同数据集上的测试accuracy
。我们的实现不支持 NELL
上的 M0
配置,因此未报告其结果。
可以看到:三种配置都具有相近的性能,即更换 dropout
的位置不会影响模型的预处性能。因此后续的收敛性实验中,我们以最快的 M1 + PP
配置作为 exact baseline
。
然后我们评估 VRGCN
的收敛性。我们将 M1 + PP
配置作为 exact baseline
,然后对比 MLP
。我们对四种近似策略进行比较,其中
NS
:没有使用预处理的 NS
估计量(邻域采样)。
NS + PP
:采用了预处理的 NS
估计量。
IS + PP
:采用了预处理的 IS
估计量(重要性采样)。
CV + PP
:采用了预处理的 CV
估计量。
CVD + PP
:采用了预处理的 CVD
估计量。
当 epoch
都具有很低的、相近的时间复杂度,相比之下 baseline M1 + PP
的 baseline
相比,它们的收敛速度。
首先我们不考虑 dropout
(dropout rate = 0
),然后绘制不同方法每个 epoch
的损失函数值,如下图所示。
在前 4
个数据集中,CV + PP
的损失曲线和 exact
损失曲线相重叠;部分数据集上未给出 NS
损失曲线和 IS + PP
损失曲线,因为损失太大;我们并未绘制 CVD + PP
,因为当 dropout rate = 0
时,它等价于 CV + PP
。
结论:
CV + PP
总是可以达到和 M1 + PP
相同的训练损失。
NS, NS + PP, IS + PP
由于它们的梯度是有偏的,因此其训练损失更高。
这些结果和前述定理相符。定理指数:CV
估计量的训练能够收敛到 exact
的局部最优,和
然后我们考虑使用 dropout
,然后比较每个 epoch
使用不同方式训练的模型验证accuracy
。其中不管训练算法采取何种方式,inference
都采用 exact
算法来预测。结果如下图所示。注意:NS
在Reddit
数据集上收敛到 0.94
、在 PPI
数据集上收敛到 0.6
,由于太低所以未在图中给出。
结论:
当存在 dropout
时,CVD + PP
是唯一可以在所有数据集上达到和 exact
算法相近的验证准确率的算法。
当存在 dropout
时,CVD + PP
的收敛速度(以 epoch
数量衡量)和 M1 + PP
相当。这意味着尽管 CVD + PP
的收敛速度几乎没有损失。
这已经是我们期待的最佳结果:具有和 MLP
可比的计算复杂度,但是具有和 GCN
相近的模型质量。
在 PubMed
数据集上,CVD + PP
性能比 M1 + PP
好得多,我们怀疑它找到了更加的局部最优值。
对 PPI
以外的所有其它数据集,简单的 CV + PP
的准确率就可以和 M1 + PP
相媲美。
在 Reddit,PPI
数据集上,IS + PP
性能比 NS + PP
更差。这可能是部分节点没有采样到任何邻居,正如我们前文所述。
我们对 IS + PP
的准确率结果和 FastGCN
的报告结果相符,而他们的 GraphSAGE baseline
并未实现预处理技术。
下面给出了在最大的 Reddit
数据集上达到给定的 96%
验证准确率所需要的平均训练 epoch
和训练时间。可以看到:CVD + PP
比 exact
快 7
倍左右。这是因为 CVD + PP
的感受野大小显著降低。
另外,NS, IS + PP
无法收敛到给定的准确率(即无法收敛到 96%
验证准确率)。
我们使用相同的、由 M1 + PP
训练的模型,然后采用不同的算法进行预测,并给出预测质量。
如前所述,CV
可以达到和 exact
算法相同的测试准确率,而 NS, NS + PP
的性能要差得多。
最后,我们比较了训练期间第一层权重每一维梯度的平均 bias
和方差(对权重自身进行了归一化)。
结论:
对于没有 dropout
的模型,CV + PP
的梯度几乎所无偏的。
对于存在 dropout
的模型,CV + PP
he CVD + PP
梯度的bias
和方差通常小于 NS
和 NS + PP
。